/**
 * ***************************************************************************** Copyright (c) 2004,
 * 2008 IBM Corporation and others. All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0 which accompanies this
 * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html
 *
 * <p>Contributors: IBM Corporation - initial API and implementation
 * *****************************************************************************
 */
package org.eclipse.ltk.core.refactoring;

/**
 * Comparator class to compare two refactoring status entries. The general contract of this class is
 * equivalent to the one of class {@link java.util.Comparator}from the Java Collection Framework.
 *
 * <p>This interface is intended to be implemented by clients.
 *
 * @since 3.1
 */
public interface IRefactoringStatusEntryComparator {

  /**
   * Compares two refactoring status entries for order. Returns a negative integer, zero, or a
   * positive integer as the first status entry is less than, equal to, or greater than the second.
   *
   * <p>The implementor must ensure that <tt>sgn(compare(x, y)) == -sgn(compare(y, x))</tt> for all
   * <tt>x</tt> and <tt>y</tt>.
   *
   * <p>The implementor must ensure that the relation is transitive: <tt>((compare(x, y)&gt;0)
   * &amp;&amp; (compare(y, z)&gt;0))</tt> implies <tt>compare(x, z)&gt;0</tt>.
   *
   * <p>Furthermore, the implementer must ensure that <tt>compare(x, y)==0</tt> implies that
   * <tt>sgn(compare(x, z))==sgn(compare(y, z))</tt> for all <tt>z</tt>.
   *
   * @param entry1 the first refactoring status entry to be compared.
   * @param entry2 the second refactoring status entry to be compared.
   * @return a negative integer, zero, or a positive integer as the first status entry is less than,
   *     equal to, or greater than the second.
   */
  public int compare(RefactoringStatusEntry entry1, RefactoringStatusEntry entry2);
}
